/**
 * @author caesar
 * @date 2025/6/28
 * @apiNote
 */
/*
## 计算今天是星期几
（1）定义变量week赋值为上一年最后一天的星期值，例如：2021年12月31日的星期值5，
（2）定义变量year、month、day，分别赋值今年（例如：2022年）某一天的年、月、日值。
（3）计算这一天是星期几。
（4）开发提示
- 需要计算这一天是今年（例如：2022年）的第几天，即今年已经过了几天了（总天数）
- 再用（总天数 + 5 ）% 7 的结果来判断是星期几
（5）每个月总天数：
- 平年的2月份有28天，闰年的2月份有29天。
- 1月、3月、5月、7月、8月、10月、12月有31天，
- 4月、6月、9月、11月有30天。
（6）闰年的判断标准是：
- 年份year可以被4整除，但不能被100整除
- 或者年份year可以被400整除*/
public class Homework3_2 {
        public static void main(String[] args) {
            int week = 5;//这是2021年12月31日的星期值
            int year = 2022;
            int month = 3;
            int day = 8;
            //判断这一天是当年的第几天==>从1月1日开始，累加到xx月xx日这一天
            //(1)[1,month-1]个月满月天数
            //(2)单独考虑2月份是否是29天（依据是看year是否是闰年）
            //(3)第month个月的day天
            //声明一个变量days，用来存储总天数
            int days = 0;
            //累加[1,month-1]个月满月天数
            switch (month) {
                case 12:
                    //累加的1-11月
                    days += 30;//这个30是代表11月份的满月天数
                    //这里没有break，继续往下走
                case 11:
                    //累加的1-10月
                    days += 31;//这个31是代表10月的满月天数
                    //这里没有break，继续往下走
                case 10:
                    days += 30;//9月
                case 9:
                    days += 31;//8月
                case 8:
                    days += 31;//7月
                case 7:
                    days += 30;//6月
                case 6:
                    days += 31;//5月
                case 5:
                    days += 30;//4月
                case 4:
                    days += 31;//3月
                case 3:
                    days += 28;//2月
                    //在这里考虑是否可能是29天
                    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
                        days++;//多加1天
                    }
                case 2:
                    days += 31;//1月
                case 1:
                    days += day;//第month月的day天
            }
            //计算星期
            week += days;
            week %= 7;
            //输出结果
            System.out.print(year + "年" + month + "月" + day + "日是星期");
            switch (week) {
                case 0:
                    System.out.println("日");
                    break;
                case 1:
                    System.out.println("一");
                    break;
                case 2:
                    System.out.println("二");
                    break;
                case 3:
                    System.out.println("三");
                    break;
                case 4:
                    System.out.println("四");
                    break;
                case 5:
                    System.out.println("五");
                    break;
                case 6:
                    System.out.println("六");
                    break;
            }
        }
}


